home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 10
/
The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso
/
PC_SIGCD
/
08
/
5
/
DISK0859.ZIP
/
DEMO
/
MVS.ALC
< prev
next >
Wrap
Text File
|
1987-06-06
|
18KB
|
660 lines
*********
*
* PGMID. MVS.ALC (LINKED TO MVS.MOD FOR DYNMAIC LOAD AND EXEC)
* AUTHOR. DON HIGGINS
* DATE. 05/26/87
* REMARKS.
* THIS MODULE DEFINES MVS SVC HANDLER AND EXTERNAL
* INTERRUPT HANDLER TO SUPPORT EXECUTION OF MODULES WITH
* MVS SVC'S. RETRUN FROM THIS MODULE IS VIA LPSW WHICH
* PLACES CALLING PROGRAM IN PROBLEM STATE WITH SUPERVISOR
* AND NO EXTERNAL INTERRUPTS ENABLED (EXTERNAL CAN BE TURNED
* ON LATER IF DESIRED). FOR MVS SVC EQU'S SEE MVS.DOC.
*
* MAINTENANCE.
*
* 05/30/87 CHANGE SVC 3 EXIT TO RETURN IN SUPR STATE, ADD SVC 10
* 05/31/87 ADD IGC013 ABEND T1/T4
* 06/01/87 USE SVCR15 TO SIMPLIFY RTN SAVE/RESTORE, CHANGE IGC NAMES
* 06/04/87 SAVE R14,R1 ACROSS EXECRTN FOR SVC'S AND INS'S
* 06/06/87 FIX WTOR TO CLEAR R15 AND USE EXTERNAL INTERRUPT TO POST
*********
*
* MVS NUCLEUS INITIALIZATION PROGRAM (NIP)
*
*********
MVS CSECT
USING MVS,R15
STM R14,R6,12(R13)
LR R6,R15
DROP R15
USING MVS,R6
SVC TRACE
DC C'IOF' TURN OFF INTERRUPTS FOR WTOR FACILITY
*
* INIT CVT
*
LA R1,CVT
USING IHACVT,R1
ST R1,16 STORE CVT ADDRESS IN LOW MEMORY
LA R0,TCB
ST R0,CVTTCBP CVT TCB PTR
LA R0,SMCA
ST R0,CVTSMCA CVT SMCA PTR
L R0,ASCASL
ST R0,CVTMZ00 CVT END OF REAL MEMORY
*
* INIT SVC TABLE
*
LA R1,4*256
SVC GMAIN
LTR R0,R0
BNZ ABEND80A NO MEMORY FOR SVC TABLE
ST R2,ASVCTAB
LR R0,R2
LA R1,4*256
SR R14,R14
SR R15,R15
MVCL R0,R14 CLEAR SVC TABLE
LA R0,IGC0001
ST R0,4*1(R2) INIT SVC 1 WAIT
LA R0,IGC0002
ST R0,4*2(R2) INIT SVC 2 POST
LA R0,IGC0003
ST R0,4*3(R2) INIT SVC 3 EXIT
LA R0,IGC0010
ST R0,4*10(R2) INIT SVC 10 GMAINR/FMAINR
LA R0,IGC0013
ST R0,4*13(R2) INIT SVC 13 ABEND T1
LA R0,IGC0035
ST R0,4*35(R2) INIT SVC 35 WTO/WTOR
*
* INIT INS TABLE
*
LA R1,4*256
SVC GMAIN
LTR R0,R0
BNZ ABEND80A NO MEMORY FOR INS TABLE
ST R2,AINSTAB
LR R0,R2
LA R1,4*256
SR R14,R14
SR R15,R15
MVCL R0,R14 CLEAR SVC TABLE
*
* INIT SVC, PGM, AND EXT NEW PSW'S
*
LA R0,SVCRTN
ST R0,SVCPSW+4 INIT NEW SVC PSW ADDR
LA R0,PGMRTN
ST R0,PGMPSW+4 INIT NEW PGM PSW ADDR
LA R0,EXTRTN
ST R0,EXTPSW+4 INIT NEW EXT PSW ADDR
MVC NEWSVC(8),SVCPSW SET NEW SVC PSW
MVC NEWPGM(8),PGMPSW SET NEW PGM PSW
MVC NEWEXT(8),EXTPSW SET NEW EXT PSW
LM R14,R6,12(R13) RESTORE CALLER'S REG'S
DROP R6
USING MVS,R15
ST R14,PRBPSW+4 INIT PROBLEM STATE EXIT PSW ADDR
*
* EXIT TO CALLER IN PROBLEM STATE TO ACTIVATE MVS SHELL ENVIRONMENT
*
LPSW PRBPSW EXIT WITH NEW PROBLEM PSW
DROP
SVCPSW DS 0D
DC X'060C0000',A(*-*) ENTER SVC HANDLER IN SUPR STATE
PGMPSW DS 0D
DC X'060C0000',A(*-*) ENTER PGM HANDLER IN SUPR STATE
EXTPSW DS 0D
DC X'060C0000',A(*-*) ENTER EXT HANDLER IN SUPR STATE
PRBPSW DS 0D
DC X'070D0000',A(*-*) RETURN WITH PROB. STATE AND EXT. INT.
*********
*
* MVS SVC INTERRUPT HANDLER
*
*********
SVCRTN EQU *
SVC TRACE
DC C'SVC'
DROP
ST R15,SVCR15
L R15,NEWSVC+4
USING SVCRTN,R15
STM R0,R14,SVCSAV
L R14,SVCR15
ST R14,SVCSAV+15*4
L R14,OLDSVC+4 R14 = ADDR SVC + 2
BCTR R14,0
SR R2,R2
IC R2,0(R14) R2=SVC#
L R3,ASVCTAB
LA R4,IGC0NNN
BAL R14,EXECRTN EXECUTE SVC
USING *,R14
LTR R15,R15 WAS EXEC OK
BNZ ABEND106
LM R2,R13,SVCSAV+2*4 RESTORE USER REGS (2-13 ONLY)
LPSW OLDSVC EXIT TO INSTR AFTER ORIG SVC IN PROB STATE
ABEND106 EQU *
L R1,=X'80106000' NO, ABEND 106 WITH DUMP
LA R2,13
L R3,ASVCTAB
LA R4,IGC0NNN
BAL R14,EXECRTN EXECUTE ABEND SVC
DROP
USING *,R14
OI OLDSVC+1,X'02' TURN ON WAIT BIT IN OLD SVC PSW
LM R0,R15,SVCSAV RESTORE ALL REGS TO ORIG.
LPSW OLDSVC IF IT RETURN'S, LOAD WAIT STATE OLD PSW
DROP
SVCSAV DC 16F'0'
********
*
* PROGRAM INTERRUPT ROUTINE
*
********
PGMRTN EQU *
SVC TRACE
DC C'PGM'
DROP
ST R15,PGMR15 TEMP SAVE R15 IN LOW MEMORY
L R15,NEWPGM+4
USING PGMRTN,R15
STM R0,R14,PGMSAV SAVE REGS
L R14,PGMR15
ST R14,PGMSAV+4*15
CLI OLDPGM+3,2 IS THIS PRIVILEGED OR OPERATION EXCEPTION
BH ABEND0CX NO, ABEND 0CX WITH DUMP
L R14,OLDPGM+4 YES, TRY TO LOAD INS0NNN MACRO INSTRUCTION
SR R2,R2
IC R2,0(R14) R2 = OPERATION CODE
L R3,AINSTAB
LA R4,INS0NNN
BAL R14,EXECRTN EXECUTE INS RTN IF FOUND
USING *,R14
LTR R15,R15 WAS MACRO INSTR. EXEC OK
BNZ ABEND0CX NO, ABEND 0CX WITH DUMP
LM R0,R15,PGMSAV RESTORE ALL REGS
LPSW OLDPGM EXIT TO NEXT INSTR IN PROB STATE
DROP
ABEND0CX EQU *
BALR R15,0
USING *,R15
SR R1,R1
IC R1,OLDPGM+3
SLL R1,12
O R1,=X'800C0000' R1=0CX SYSTEM ABEND WITH DUMP
LA R2,13
L R3,ASVCTAB
LA R4,IGC0NNN
BAL R14,EXECRTN EXECUTE ABEND SVC
DROP
USING *,R14
OI OLDPGM+1,X'02' TURN ON WAIT BIT IN OLD PGM PSW
LM R0,R15,PGMSAV
LPSW OLDPGM IF IT RETURN'S, LOAD WAIT STATE OLD PSW
DROP
PGMSAV DC 16F'0' SAVE R0-R15
********
*
* EXTERNAL INTERRUPT ROUTINE
*
* 1. CURRENTLY ONLY FUNCTION IMPLEMENTED VIA EXTERNAL INTERRUPT IS
* ENTRY OF WTOR REPLY WITH POST OF ECB WHEN DONE. ONLY ONE WTOR
* ACTIVE AT A TIME IS SUPPORTED IN THIS SINGLE USER SHELL.
* PC/370 RELEASE 2.0 EXECUTES EXTERNAL INTERRUPT ROUTINE EVERY
* 256 INSTRUCTIONS IF ENABLED AND PROBLEM STATE. THIS WILL
* CAUSE HESITATION ON SLOWER PC'S AND HAVING EXTERNAL INTERRUPT
* ENABLED FOR THIS FACILITY INTRODUCES AROUND 10% OVERHEAD (25
* EXTRA INSTRUCTIONS EVERY 256 INSTRUCTIONS).
*
********
EXTRTN EQU *
SVC TRACE
DC C'EXT'
DROP
ST R15,EXTR15 TEMP SAV R15
L R15,NEWEXT+4
USING EXTRTN,R15
STM R0,R14,EXTSAV SAVE REGS
L R14,EXTR15
ST R14,EXTSAV+4*15
CLI WTORPEND,TRUE EXIT IF NO WTOR PENDING
BNE EXTEXT
SVC KEYSTAT IS THERE KEYBOARD INPUT PENDING
LTR R0,R0 EXIT IF NO KEY PENDING
BZ EXTEXT
L R3,WTORCCNT
L R4,WTORCRPY
WTORLOOP EQU *
SVC KEYSTAT IS THERE KEYBOARD INPUT PENDING
LTR R0,R0
BZ WTORSAVE
SVC KEYREAD
CLM R0,1,=AL1(CR)
BE WTORDONE STOP AT CARRIAGE RETURN
STC R0,0(R4)
LA R4,1(R4)
BCT R3,WTORLOOP REPEAT UNTIL NO MORE CHAR OR FULL
WTORDONE EQU *
MVI WTORPEND,FALSE
LA R2,LF
SVC WRITECHR
LA R2,CR
SVC WRITECHR
L R2,WTORTCNT
SR R2,R3
BZ WTORSKIP SKIP CONVERT IF NO CHAR.
L R1,WTORARPY
SVC ASCEBC CONVERT REPLY TO EBCDIC
WTORSKIP EQU *
L R1,WTORAECB
LA R6,IGC0002
BALR R14,R6 POST WTOR ECB VIA BRANCH ENTRY TO POST
USING *,R14
LM R0,R15,EXTSAV RESTORE ALL REGS
LPSW OLDEXT EXIT TO NEXT INSTR. OR EXIT FROM WAIT
DROP R14
WTORSAVE EQU *
ST R3,WTORCCNT
ST R4,WTORCRPY
EXTEXT EQU *
LM R0,R15,EXTSAV RESTORE ALL REGS
LPSW OLDEXT EXIT TO NEXT INSTR
DROP
EXTSAV DC 16F'0' SAVE R0-R15
********
*
* EXECUTE SVC/INS ROUTINE FROM SVC, PGM, OR EXT INTERRUPT HANDLER
*
* NOTE THIS ROUTINE ALONG WITH INTERRUPT HANDLERS IS CURRENTLY ONLY
* SERIALLY REUSABLE SO NO SVC CAN ISSUE MVS SVC ETC. (PC/370 SVC'S OK).
* THIS IS A SINGLE USER NON-MULTI-TASKING VERSION OF MVS.
*
* R2 = NUMBER OF SVC OR USER DEFINED INSTRUCTION OP CODE
* R3 = SVC/INS TABLE
* R4 = ADDRES OF MODULE NAME 'IGC0NNN' OR 'INS0NNN'
* R14 = RETURN ADDRESS
* R15 = NZ IF LOAD FAILED ELSE ZERO FOR SUCCESSFUL EXECUTION
*
EXECRTN EQU *
BALR R7,0
USING *,R7
CLI LOCK,BUSY
BE ABENDFXX ABEND FXX FOR INVALID RECURSIVE ENTRY
MVI LOCK,BUSY
ST R14,EXECEXT
AR R2,R2
AR R2,R2 R2=4*SVC#
L R6,0(R2,R3) R6=A(SVC RTN ENTRY)
LTR R6,R6
BNZ CALLRTN
BAL R14,LOADRTN LOAD SVC/INS IF NO ADDR IN TABLE
BNZ EXITRTN
CALLRTN EQU *
LA R3,CVT
LA R4,TCB
LA R5,RB
LA R7,ASCB
BALR R14,R6 CALL SVC ROUTINE
EXITRTN EQU *
BALR R14,0
USING *,R14
MVI LOCK,FREE
L R14,EXECEXT
BR R14
DROP R14
LOCK DC AL1(FREE) PREVENT RECURSIVE CALLS
FREE EQU 0
BUSY EQU 1
EXECEXT DC A(0)
LOADRTN EQU *
ST R14,LOADEXT
STM R0,R1,LOADSAV SAVE R0-R1 ACROSS LOAD
LA R3,0(R2,R3) SAVE TABLE ENTRY ADDR IN R3
SRL R2,2
CVD R2,PWORK
MVC 3(4,R4),=X'F0202020'
ED 3(4,R4),PWORK+6
LR R1,R4
SVC LOAD LOAD TYPE 3/4 DYNAMIC SVC ROUTINE
L R14,LOADEXT
LTR R15,R15
BNZR R14
ST R0,0(R3) SAVE SVC ENTRY IN SVC TABLE
LR R6,R0
LM R0,R1,LOADSAV
BR R14 RETURN FROM LOAD SVC
DROP
LOADEXT DC A(0)
LOADSAV DC 2F'0'
IGC0NNN DC C'IGC0NNN.MOD' TYPE 3/4 SVC MODULE
INS0NNN DC C'INS0NNN.MOD' TYPE 3/4 USER DEFINED OPCODE ROUTINE
ASVCTAB DC A(*-*) ADDRESS OF SVC TABLE
AINSTAB DC A(*-*) USER DEFINED INSTRUCTION RTN TABLE
*********
*
* WAIT STATE ERRORS
*
*********
ABEND80A EQU * MEMORY ERROR DURING NIP
SVC TRACE
DC C'80A'
SVC TRACE
DC C'BUG'
ABENDFXX EQU * RECURSIVE CALL TO EXECRTN
SVC TRACE
DC C'FXX'
SVC TRACE
DC C'BUG'
*********
*
* IGC0001 - WAIT
*
*********
IGC0001 DS 0H
USING *,R6
SR R15,R15
LTR R1,R1
BZ IGC0001E EXIT WITH ERROR IF ECBLIST
TM 0(R1),X'40'
BOR R14 EXIT OK IF POSTED ALREADY
OI 0(R1),X'80' TURN ON WAIT BIT FOR EXT. INT. POST
LA R0,IGC0001L
ST R0,WAITLOOP+4
LPSW WAITLOOP ENTER ENABLED PROB. STATE AND LOOP
IGC0001L B * LOOP UNTIL POST OCCURS VIA EXT. INT.
IGC0001E EQU *
LA R15,4
BR R14
WAITLOOP DC 0D'0',X'070D0000',A(*-*) PROB STATE LOOP
*********
*
* IGC0002 - POST
*
*********
IGC0002 DS 0H
USING *,R6
SR R15,R15
LTR R1,R1
BM IGC0002E EXIT WITH ERROR IF ECBLIST
OI 0(R1),X'40' TURN ON ECB POST BIT
TM 0(R1),X'80' IS WAIT BIT ON
BZR R14 EXIT NOW IF TASK NOT WAITING
NI OLDEXT+1,X'FE' TURN OFF PROB. STATE IF WAITING
LA R0,IGC0002P FORCE EXIT FROM WAIT SVC LOOP
ST R0,OLDEXT+4 RESET EXT RETURN ADDR. TO BR R14
IGC0002P EQU *
BR R14 EXIT IN SUPERVISOR STATE
IGC0002E EQU *
LA R15,4
BR R14
*********
*
* IGC0003 - EXIT
*
*********
IGC0003 DS 0H
USING *,R6
NI OLDSVC+1,X'FE' TURN OFF PROBLEM STATE
SR R15,R15
BR R14 EXIT IN SUPERVISOR STATE
*********
*
* IGC0010 - GMAINR/FMAINR R0=SPL,LENGTH, R1=NEG GMAIN/POS. FMAIN ADDR.
*
*********
IGC0010 DS 0H
USING *,R6
LTR R1,R1
BNM IGC0010F
IGC0010G EQU *
LR R1,R0
SVC GMAIN
LR R0,R1
LR R1,R2
SR R15,R15
BR R14
IGC0010F EQU *
LR R2,R1
LR R1,R0
SVC FMAIN
SR R15,R15
BR R14
*********
*
* IGC0013 - ABEND R1 = COMPLETION CODE
*
*********
IGC0013 DS 0H
USING *,R6
STM R14,R2,IGC0013S
ST R1,PWORK
UNPK DWORK(9),PWORK(5)
TR DWORK(8),HEXTAB-240
MVC DCMP,DWORK
UNPK DWORK(9),OLDSVC(5)
TR DWORK(8),HEXTAB-240
MVC DPSW(8),DWORK
UNPK DWORK(9),OLDSVC+4(5)
TR DWORK(8),HEXTAB-240
MVC DPSW+8(8),DWORK
LA R2,DABEND
SVC WTO DISPLAY COMPLETION CODE AND PSW
LTR R1,R1
BP IGC0013N NO DUMP REQUESTED
L R0,AIGC1013
LTR R0,R0
BNZ IGC0013D
LA R1,=C'IGC1013.MOD'
SVC LOAD
LTR R15,R15
BNZ IGC0013A EXIT WITH ERROR TO FORCE ABEND 106
ST R0,AIGC1013 SAVE ADDRESS OF TYPE 4 ABEND FORMATTED DUMP
IGC0013D EQU * TYPE 4 FOUND, GO PRINT FORMATTED DUMP
LM R14,R2,IGC0013S
L R6,AIGC1013
BR R6 LINK TO TYPE 4 FORMATTED ABEND DUMP ROUTINE
IGC0013N EQU * NO DUMP REQUESTED, EXIT NORMALLY
LM R14,R2,IGC0013S
SR R15,R15 CLEAR R15 TO PREVENT 106 ABEND FOR IGC1013 ONLY
BR R14 EXIT NORMALLY
IGC0013A EQU *
LM R14,R2,IGC0013S
LA R15,4 SET ERROR TO FORCE 106 ABEND FOR IGC1013 NOT FOUND
BR R14 EXIT NORMALLY
AIGC1013 DC A(0) ADDRESS OF TYPE 4 ABEND FORMATTED DUMP ROUTINE
IGC0013S DC 5F'0' SAVE R14,R2 ACROSS LOAD
DABEND DC C'IGC0013A ABEND = '
DCMP DC CL8'XXSSSUUU',C' PSW = '
DPSW DC CL16' ',C'$'
*********
*
* IGC0035 - WTO/WTOR
*
*********
IGC0035 DS 0H
USING *,R6
SR R2,R2
CLI 0(R1),0
BNE IGCWTOR
IGCWTO EQU *
IC R2,1(R1)
SH R2,=H'4'
EX R2,MVCWTO MOVE WTO TEXT
LA R2,WTOMSG(R2)
MVI 0(R2),C'$' ADD MS-DOS END OF TEXT
LA R2,WTOMSG
SVC WTO ISSUE MS-DOS WTO
SR R15,R15
BR R14
IGCWTOR EQU *
SR R15,R15
IC R15,9(R1)
EX R15,MVCWTORM
LA R2,WTOMSG-4(R15)
MVI 0(R2),C'$'
LA R2,WTOMSG
SVC WTO
CLI WTORPEND,TRUE ONLY ONE AT A TIME ALLOWED
BE WTORERR
IC R15,0(R1) R15 = REPLY LENGTH
ST R15,WTORTCNT SAVE COUNT FOR EXT. INT. RTN.
ST R15,WTORCCNT
L R0,0(R1)
ST R0,WTORARPY SAVE REPLY ADDR.
ST R0,WTORCRPY
L R15,4(R1)
ST R15,WTORAECB SAVE ECB ADDR.
SR R0,R0
ST R0,0(R15) CLEAR ECB
MVI WTORPEND,TRUE ENABLE EXT. INT. REPLY ROUTINE
SR R15,R15
BR R14 EXIT WITH REPLY PENDING
WTORERR EQU *
LA R15,4
BR R14
WTOMSG DC CL256' ',C' '
MVCWTO MVC WTOMSG(0),4(R1)
MVCWTORM MVC WTOMSG(0),12(R1)
WTORPEND DC AL1(FALSE)
TRUE EQU 1
FALSE EQU 0
WTORTCNT DC A(*-*) TOTAL REPLY CHAR ALLOWED
WTORCCNT DC A(*-*) CURRENT REPLY COUNTER DEC BY EXT. INT. RTN.
WTORARPY DC A(*-*) ADDRESS OF REPLY FIELD
WTORCRPY DC A(*-*) CURRENT REPLY CHAR. ADDR. INC BY EXT. INT. RTN.
WTORAECB DC A(*-*) ADDRESS OF ECB
********
*
* COMMON DATA
*
********
*
* PC/370 SVC'S
*
PWORK DC D'0'
DWORK DC CL9' '
HEXTAB DC C'0123456789ABCDEF'
EXIT EQU 0
TRACE EQU 9
GMAIN EQU 10
FMAIN EQU 11
EBCASC EQU 12
ASCEBC EQU 12
LOAD EQU 25
WTO EQU 200+9 MS-DOS PRINT TEXT
WRITECHR EQU 200+2 MS-DOS PRINT CHAR
KEYREAD EQU 200+1 MS-DOS READ CHAR WITH ECHO
KEYSTAT EQU 200+11 MS-DOS TEST KEYBOARD
CR EQU X'0D' ASCII CARRIAGE RETURN
LF EQU X'0A' ASCII LINE FEED
*
* GENERAL REGISTERS
*
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
*********
*
* CVT - MVS COMMUNICATIONS VECTOR TABLE
*
*********
DS 0F
DC CL16'PC/370 MVS CVT'
DC X'8386' MACHINE #
DC C'2.0A' PC/370 RELEASE 2.0A
CVT DS 0F
DC A(*-*) CVTTCBP ACCRESS OF NEXT TCB
ORG CVT+56
DC PL4'87200' CVTDATE PACKED DECIMAL DATE
ORG CVT+116
DC X'93' MVS/XA OS OPTIONS
ORG CVT+128
DC A(X'200') CVTNUCB END OF NUCLEUS
ORG CVT+164
DC A(*-*) CVTMZ00 HIGHEST ADDRESS IN MACHINE
ORG CVT+196
DC A(*-*) CVTSMCA SMF COMMON AREA
DC A(*-*) CVTUSER USER POINTER
*********
*
* MISC. MVS CONTROL BLOCKS
*
*********
TCB DS 0F TASK CONTROL BLOCK
RB DS 0F
ASCB DS 0F ADDRESS SPACE CONTROL BLOCK
SMCA DS 0F SMF COMMON AREA
*********
*
* PSW.DOC LOW MEMORY PSW EQUATES
*
*********
OLDEXT EQU X'18' OLD EXTERNAL PSW
OLDSVC EQU X'20' OLD SUPERVISOR CALL PSW
OLDPGM EQU X'28' OLD PROGRAM CHECK PSW
OLDMCK EQU X'30' OLD MACHINE CHECK PSW
OLDIOS EQU X'38' OLD I/O INTERRUPT PSW
CSW EQU X'40' CHANNEL STATUS WORD
CAW EQU X'48' CHANNEL ADDRESS WORD
ITIMER EQU X'50' INTERVAL TIMER
NEWEXT EQU X'58' NEW EXTERNAL PSW
NEWSVC EQU X'60' NEW SUPERVISOR CALL PSW
NEWPGM EQU X'68' NEW PROGRAM CHECK PSW
NEWMCK EQU X'70' NEW MACHINE CHECK PSW
NEWIOS EQU X'78' NEW I/O INTERRUPT PSW
SVCR15 EQU X'190' SVC TEMP SAV R15
PGMR15 EQU X'194' PGM TEMP SAV R15
EXTR15 EQU X'198' EXT TEMP SAV R15
IHACVT DSECT
CVTTCBP DS A NEXT TCB
ORG IHACVT+56
CVTDATE DS PL4 PACKED DATE
ORG IHACVT+128
CVTNUCB DS A END OF NUCLEUS
ORG IHACVT+164
CVTMZ00 DS A END OF REAL MEMORY
ORG IHACVT+196
CVTSMCA DS A SMF COMMON AREA
CVTABEND DS A SECONDARY CVT
CVTUSER DS A USER POINTER
*********************************************************************
*
* ASCB - ADDRESS SPACE CONTROL BLOCK FOR PC/370 RELEASE 2.0+
*
*********************************************************************
*
* THIS CONTROL BLOCK IS INITIALIZED BY THE PC/370 EMULATOR AT EXECUTION
* TIME FOR THE MAIN PROGRAM COM FILE AND IS LOCATED AT VIRTUAL MEMORY
* ADDRESS X'104'. THIS CONTROL BLOCK IS ALSO CREATED FOR EACH ATTACHED
* COM PROGRAM ADDRESS SPACE DURING ATTACH SVC 26 EXECUTION (SEE SVC.DOC).
*
*********************************************************************
ASCB DSECT
ASCIDR DS CL4 ASCB IDENTIFIER C'ASCB'
ASCNXT DS A ABSOLUTE ADDRESS OF NEXT DAUGHTER TASK ASCB
ASCPRV DS A ABSOLUTE ADDRESS OF PREVIOUS MOTHER TASK ASCB
ASCASO DS A ABSOLUTE ADDRESS OF ADDRESS SPACE ORIGIN
ASCASL DS F LENGTH OF ADDRESS SPACE (USED FOR ADDRESS PROTECTION)
ASCASF DS A RELATIVE ADDRESS OF FIRST FREE QUEUE ELEMENT (FQE)
ASCENT DS A RELATIVE ADDRESS OF ENTRY POINT (FROM COM PREFIX)
ASCEXT DS A RELATIVE ADDRESS OF RETURN IN MOTHER TASK ASCB
LASCB EQU *-ASCB
END MVS